﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

using XML;


namespace HypnoIsIsCoachingApplikation
{


    public partial class Form_HypIsIs : Form
    {
        Patient m_Patient= new Patient();
        PatientManagementAPI m_PMAPI = new PatientManagementAPI();
        string m_TeilnehmerXMLPfad = @"C:\Users\Issi\workspace\aifhe-xml-ws1213\XML_WS1213\HypnoIsIsCoachingApplikation\bin\Debug\docs\Teilnehmer.xml";
        bool m_NeuerTeilnehmer = false;
              
        // Start Ansicht:
        public void Start_View()
        {
            pictureBox_HypILogo.Visible = true;
            tabControl_HypI.Visible = false;        

        }

        // OpenView Teilnehmer
        public void OpenViewUser()
        {
            pictureBox_HypILogo.Visible = false;
            tabControl_HypI.Visible = true;
          
        }

        // Clear Textboxen
        public void ClearTextBox()
        { 
        
        
        }

        // Beenden
        private void beendenToolStripMenuItem_Click(object sender, EventArgs e)
        {
            this.Close();
        }


        // Neuer Teilnehmer
        private void teilnehmerToolStripMenuItem_Click(object sender, EventArgs e)
        {
            m_NeuerTeilnehmer = true;

            // Öffne Nutzeransicht
            OpenViewUser();
            TeilnehmerDatenClear();
            // ClearTextboxen

            m_Patient = new Patient();
            m_PMAPI.CreatePatient(m_Patient);
        }

        // Neuer Termin
        private void terminToolStripMenuItem_Click(object sender, EventArgs e)
        {

        }
        // Öffne Teilnehmer X
        private void toolStripMenuItem1_Click(object sender, EventArgs e)
        {
            m_NeuerTeilnehmer = false;

            SearchForm SF = new SearchForm(m_PMAPI);
            //MessageBox.Show(SF.m_ZTeilnehmer);
            try
            {
                if (SF.ShowDialog() == DialogResult.OK)
                {
                    if (SF.m_ZTeilnehmer != null)
                    {
                        m_Patient = m_PMAPI.OpenPatient("", SF.m_ZTeilnehmer);
                     // Zeige NutzerAnsicht
                      OpenViewUser();
                      
                      TeilnehmerDatenEinlesen(m_Patient);
                   
                    }
                }
              
            }
            catch(Exception ex)
            {
                MessageBox.Show(ex.Message.ToString());
            }

          
         
            

        }
        // Öffne Termin Ansicht
        private void seitenansichtToolStripMenuItem_Click(object sender, EventArgs e)
        {

        }


        private void TeilnehmerDatenEinlesen(Patient _Patient)
        {
            
            ////////////////////////////////////////////////////////////////
            ///////////// Standard Daten zuweisen ///////////////////////
            ////////////////////////////////////////////////////////////// 

            textBox_Name.Text = _Patient.m_Name;
            textBox_Vorname.Text = _Patient.m_FirstName;
            textBox_Titel.Text = _Patient.m_Title;
           

            if (_Patient.m_Gender.Equals("m"))
            {
                // männlich
                comboBox_Geschlecht.SelectedIndex = 0;
            
            }
            if (_Patient.m_Gender.Equals("w"))
            {
                // weiblich
                comboBox_Geschlecht.SelectedIndex = 1;
            }


            textBox_Geburtstag.Text = _Patient.m_Birthday.ToString("dd.MM.yyyy");

            ////////////////////////////////////////////////////////////////
            ///////////// Adresse zuweisen ////////////////////////////////
            //////////////////////////////////////////////////////////////

                // Strasse:
                textBox_Strasse.Text = _Patient.m_Adress.m_Street;
                // HausNr:
                textBox_HausNr.Text = _Patient.m_Adress.m_Number;
                // PLZ
                textBox_PLZ.Text= _Patient.m_Adress.m_PostCode;
                // Ort
                textBox_Ort.Text = _Patient.m_Adress.m_Place;

            ////////////////////////////////////////////////////////////////
            ///////////// Allgemeine Daten zuweisen ///////////////////////
            ////////////////////////////////////////////////////////////// 

                textBox_Groesse.Text = _Patient.m_Height.ToString();                

                textBox_Gewicht.Text = _Patient.m_Weigth.ToString();
                _Patient.m_WeightUnit = "kg";

                textBox_SeitWann.Text = Convert.ToString(_Patient.m_Smoker.m_Since);
                textBox_Menge.Text = _Patient.m_Smoker.m_Count;

            ////////////////////////////////////////////////////////////////
            //////////// Raucher ja/nein   ////////////////////////////////
            /////////////////////////////////////////////////////////////// 
                if (_Patient.m_Smoker.m_Typ.Equals("Raucher") )
            {
                radioButton_RaucherJa.Checked = true;
            }
            if (_Patient.m_Smoker.Equals("Nichtraucher"))
            {
                radioButton_RaucherNein.Checked = true;
            }
            if (_Patient.m_Smoker.Equals("Gelegenheitsraucher"))
            {
               radioButton_RaucherGelegentlich.Checked = true;
            }

            ////////////////////////////////////////////////////////////////
            //////////// Kontakt Daten   ////////////////////////////////
            /////////////////////////////////////////////////////////////// 

            textBox_Email.Text= m_Patient.m_EMail;

            textBox_Telefon.Text =  m_Patient.m_Telephone;

            textBox_Mobil.Text = m_Patient.m_MobilePhone;
        


            ////////////////////////////////////////////////////////////////
            ///////////// Behandlung  ////////////////////////////////
            //////////////////////////////////////////////////////////////

                // Art der Behandlung
                // string Typ = "";                
                if (_Patient.m_Treatment.m_Type == "Blockadenlösung")
                {
                    checkBox_Bockadenloesung.Checked = true;
                }
                if (_Patient.m_Treatment.m_Type == "Gewichtsreduzierung")
                {
                    checkBox_Gewichtsreduzierung.Checked= true;
                }
                if (_Patient.m_Treatment.m_Type == "Individuell")
                {
                    checkBox_individuell.Checked=true;
                }
                if (_Patient.m_Treatment.m_Type == "Rauchentwöhnung")
                {
                    checkBox_Rauchentwoehnung.Checked= true;
                }
                if (_Patient.m_Treatment.m_Type == "Tiefenentspannung")
                {
                   checkBox_Tiefenentspannung.Checked= true;
                }

                    ///////////// Vorgespräche zuweisen //////////////////////////
                richTextBox_Ziele.Text = _Patient.m_Treatment.m_Briefing.m_Goal;
                richTextBox_Bemerkung.Text = _Patient.m_Treatment.m_Briefing.m_Comment;

                // Datum
                    textBox_Behandlungsdatum.Text = m_Patient.m_Treatment.m_Date.ToString("dd.MM.yyyy");
                // Ablauf
                    richTextBox_Ablauf.Text = _Patient.m_Treatment.m_Procedure;

                ////////////////////////////////////////////////////////////////
                //////////// Bezahlung    /////////////////////////////////////
                /////////////////////////////////////////////////////////////// 

                    textBox_Preis.Text = Convert.ToString(_Patient.m_Payment.m_Price);

                if (_Patient.m_Payment.m_PaimentType == "Bar")
                {
                    radioButton_Bar.Checked = true;
                }
                if (_Patient.m_Payment.m_PaimentType == "Überweisung")
                {                   
                    radioButton_Ueberweisung.Checked = true;
                }

                if (_Patient.m_Payment.m_Paid == false)
                {
                    radioButton_BezahltNein.Checked = true;
                }
                if (_Patient.m_Payment.m_Paid == true)
                {
                    radioButton_BezahltJa.Checked = true;
                }

            // Bezahlart
                if (m_Patient.m_Payment.m_PaimentType.Equals("Bar"))
                { 
                 radioButton_Bar.Checked = true;
                }
                if (m_Patient.m_Payment.m_PaimentType.Equals("Überweisung"))
                {
                    radioButton_Ueberweisung.Checked = true;
                }
            // Geldzurück Garantie               

                if (m_Patient.m_Payment.m_Guaranty == true)
                {
                    radioButton_GZGJa.Checked = true;
                }
                if (m_Patient.m_Payment.m_Guaranty == false)
                {
                    radioButton_GZGNein.Checked = true;
                }
        }

        private void TeilnehmerDatenClear()
        {

            ////////////////////////////////////////////////////////////////
            ///////////// Standard Daten zuweisen ///////////////////////
            ////////////////////////////////////////////////////////////// 

            textBox_Name.Text = "";
            textBox_Vorname.Text = "";
            textBox_Titel.Text = "";
            
                // männlich
                comboBox_Geschlecht.SelectedIndex = 0;

            textBox_Geburtstag.Text = "00.00.0000";

            ////////////////////////////////////////////////////////////////
            ///////////// Adresse zuweisen ////////////////////////////////
            //////////////////////////////////////////////////////////////

            // Strasse:
            textBox_Strasse.Text = "";
            // HausNr:
            textBox_HausNr.Text = "";
            // PLZ
            textBox_PLZ.Text = "";
            // Ort
            textBox_Ort.Text = "";

            ////////////////////////////////////////////////////////////////
            ///////////// Allgemeine Daten zuweisen ///////////////////////
            ////////////////////////////////////////////////////////////// 

            textBox_Groesse.Text = "";

            textBox_Gewicht.Text = "";
            

            textBox_SeitWann.Text = "";
            textBox_Menge.Text = "";

            ////////////////////////////////////////////////////////////////
            //////////// Raucher ja/nein   ////////////////////////////////
            /////////////////////////////////////////////////////////////// 
            
                radioButton_RaucherJa.Checked = false;


                radioButton_RaucherNein.Checked = false;

                radioButton_RaucherGelegentlich.Checked = false;
            

            ////////////////////////////////////////////////////////////////
            //////////// Kontakt Daten   ////////////////////////////////
            /////////////////////////////////////////////////////////////// 

            textBox_Email.Text = "";

            textBox_Telefon.Text ="";

            textBox_Mobil.Text = "";



            ////////////////////////////////////////////////////////////////
            ///////////// Behandlung  ////////////////////////////////
            //////////////////////////////////////////////////////////////

            // Art der Behandlung
            // string Typ = "";                
            
                checkBox_Bockadenloesung.Checked = false;


                checkBox_Gewichtsreduzierung.Checked = false;

                checkBox_individuell.Checked = false;

                checkBox_Rauchentwoehnung.Checked = false;

                checkBox_Tiefenentspannung.Checked = false;
            

            ///////////// Vorgespräche zuweisen //////////////////////////
            richTextBox_Ziele.Text ="";
            richTextBox_Bemerkung.Text = "";

            // Datum
            textBox_Behandlungsdatum.Text = "00.00.0000";
            // Ablauf
            richTextBox_Ablauf.Text = "";

            ////////////////////////////////////////////////////////////////
            //////////// Bezahlung    /////////////////////////////////////
            /////////////////////////////////////////////////////////////// 

            textBox_Preis.Text = "";

            
                radioButton_Bar.Checked = false;
                radioButton_Ueberweisung.Checked = false;
                radioButton_BezahltNein.Checked = false;
                radioButton_BezahltJa.Checked = false;
            

            // Bezahlart

                radioButton_Bar.Checked = false;

                radioButton_Ueberweisung.Checked = false;
            
            // Geldzurück Garantie               


                radioButton_GZGJa.Checked = false;

                radioButton_GZGNein.Checked = false;
           
        }


        //Speichere Teilnehmer Allegemein
        public void SaveParticipantGenerally()
        {
        // Allgemeines

            // Titel
            m_Patient.m_Title   =   textBox_Titel.Text;
            // Zuname
            m_Patient.m_Name = textBox_Name.Text;
            // Name 
            m_Patient.m_FirstName = textBox_Vorname.Text;
            // Geschlecht
            if (comboBox_Geschlecht.SelectedIndex == 0)
            {
                m_Patient.m_Gender = "m";
            }
            if (comboBox_Geschlecht.SelectedIndex == 1)
            {
                m_Patient.m_Gender = "w";
            }
          
            // Geburtstag  
            m_Patient.m_Birthday = Convert.ToDateTime(textBox_Geburtstag.Text);
            // E-Mail
            m_Patient.m_EMail = textBox_Email.Text;
            // Telefon
            m_Patient.m_Telephone = textBox_Telefon.Text;
            // Mobil
            m_Patient.m_MobilePhone = textBox_Mobil.Text;
            // SeitWann
            m_Patient.m_Smoker.m_Count = textBox_Menge.Text;
            // Menge
            m_Patient.m_Smoker.m_Since =Convert.ToDateTime(textBox_SeitWann.Text);
           
        // Adresse

            // Straße  // Hausnummer  // PLZ     // Ort
            m_Patient.m_Adress.m_Street = textBox_Strasse.Text;
            m_Patient.m_Adress.m_Number = textBox_HausNr.Text;
            m_Patient.m_Adress.m_PostCode = textBox_PLZ.Text;
            m_Patient.m_Adress.m_Place = textBox_Ort.Text;

        // Infos
            // Größe
            m_Patient.m_Height = Convert.ToInt32(textBox_Groesse.Text);
           // Gewicht 
            m_Patient.m_Weigth = Convert.ToInt32(textBox_Gewicht.Text);
        // Raucher
            if (radioButton_RaucherJa.Checked)
            {
                m_Patient.m_Smoker.m_Typ = radioButton_RaucherJa.Text;
            }
            if (radioButton_RaucherNein.Checked)
            {
                m_Patient.m_Smoker.m_Typ = radioButton_RaucherNein.Text;
            }
            if (radioButton_RaucherGelegentlich.Checked)
            {
                m_Patient.m_Smoker.m_Typ = radioButton_RaucherGelegentlich.Text;
            }
        }

        // Speichere Vorgespräch
        public void SavePaticipantBriefing()
        { 
            // Ziele
            m_Patient.m_Treatment.m_Briefing.m_Goal = richTextBox_Ziele.Text;
            // Bemerkungen
             m_Patient.m_Treatment.m_Briefing.m_Comment = richTextBox_Bemerkung.Text;

   
        }

        // Speichere Behandlung
        public void SaveTreatment()
        {
            m_Patient.m_Treatment.m_Date = Convert.ToDateTime(textBox_Behandlungsdatum.Text);
            m_Patient.m_Treatment.m_Procedure = richTextBox_Ablauf.Text;

            ////////////////////////////////////////////////////////////////
            //////////// Raucher ja/nein   ////////////////////////////////
            /////////////////////////////////////////////////////////////// 
            if (radioButton_RaucherJa.Checked)
            {
                m_Patient.m_Smoker.m_Typ = radioButton_RaucherJa.Text;
            }
            if (radioButton_RaucherNein.Checked)
            {
                m_Patient.m_Smoker.m_Typ = radioButton_RaucherJa.Text;
            }
            if (radioButton_RaucherGelegentlich.Checked)
            {
                m_Patient.m_Smoker.m_Typ = radioButton_RaucherJa.Text;
            }

            if (checkBox_Bockadenloesung.Checked)
            {
                m_Patient.m_Treatment.m_Type = checkBox_Bockadenloesung.Text;
            }
            if (checkBox_Gewichtsreduzierung.Checked)
            {
                m_Patient.m_Treatment.m_Type = checkBox_Gewichtsreduzierung.Text;
            }
            if (checkBox_individuell.Checked)
            {
                m_Patient.m_Treatment.m_Type = checkBox_individuell.Text;
            }
            if (checkBox_Rauchentwoehnung.Checked)
            {
                m_Patient.m_Treatment.m_Type = checkBox_Rauchentwoehnung.Text;
            }
            if (checkBox_Tiefenentspannung.Checked)
            {
                m_Patient.m_Treatment.m_Type = checkBox_Tiefenentspannung.Text;
            }


        }
        // Speichere Bezahlung
        public void SavePayment()
        {
            ////////////////////////////////////////////////////////////////
            //////////// Bezahlung    /////////////////////////////////////
            /////////////////////////////////////////////////////////////// 

            m_Patient.m_Payment.m_Price = Convert.ToInt32(textBox_Preis.Text);

            if (radioButton_Bar.Checked)
            {
                m_Patient.m_Payment.m_PaimentType = radioButton_Bar.Text;
            }
            if (radioButton_Ueberweisung.Checked)
            {
                m_Patient.m_Payment.m_PaimentType = radioButton_Ueberweisung.Text;
            }

            m_Patient.m_Payment.m_Currency = "EURO";

            m_Patient.m_Payment.m_Price = float.Parse(textBox_Preis.Text);

            if (radioButton_BezahltJa.Checked)
            {
                m_Patient.m_Payment.m_Paid = true;
            }
            if (radioButton_BezahltNein.Checked)
            {
                m_Patient.m_Payment.m_Paid = false;
            }

            if (radioButton_Bar.Checked)
            {
                m_Patient.m_Payment.m_PaimentType = "Bar";
            }
            if (radioButton_Ueberweisung.Checked)
            {
                m_Patient.m_Payment.m_PaimentType = "Überweisung";
            }

            if(radioButton_GZGJa.Checked)
            {
                m_Patient.m_Payment.m_Guaranty = true;
            }
            if (radioButton_GZGNein.Checked)
            {
                m_Patient.m_Payment.m_Guaranty = false;
            }

        }

        public void BMIBerechnen()
        {
            // http://www.bmi-rechner.net/

            int BMI = 0;
            double Groesse=0;
            double Gewicht=0;
           
            if (textBox_Gewicht.Text != "" && textBox_Groesse.Text != "")
            {
                Groesse = (Convert.ToDouble(textBox_Groesse.Text)) / 100;
                Gewicht = Convert.ToDouble(textBox_Gewicht.Text) ;

                BMI = Convert.ToInt32((Gewicht / (Groesse * Groesse)));

                label_BMI.Text = BMI.ToString();
                // Ausgabe der WErte:
                if (BMI < 20)
                {
                    label_BMIAuswertungI.Text = "Untergewicht";
                }
                if (BMI >= 20 && BMI <= 25)
                {
                    label_BMIAuswertungI.Text = "Normalgewicht";
                }
                if (BMI > 25 && BMI <= 30)
                {
                    label_BMIAuswertungI.Text = "Übergewicht";
                }
                if (BMI > 30 && BMI <= 40)
                {
                    label_BMIAuswertungI.Text = "Adipositas";
                }


            }
            else { }
        }

        // Initilisiere Komponenten
        public Form_HypIsIs()
        {
            InitializeComponent();

            // Start Ansicht
            Start_View();

            // Lade
            m_PMAPI.OpenXmlFile(m_TeilnehmerXMLPfad);
     
           // DateTimePicker ausblenden
            dateTimePicker1.Visible = false;
        }

        private void Form_HypIsIs_Load(object sender, EventArgs e)
        {

        }

        private void neuToolStripMenuItem_Click(object sender, EventArgs e)
        {

        }
        // Teilnehmer bzw. Änderung Speichern
        private void speichernToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (m_NeuerTeilnehmer == false)
            {
                // Eingabe Speichern
                SaveParticipantGenerally();
                // SpeicherVorgespräch
                SavePaticipantBriefing();
                // Speichere Behandlung
                SaveTreatment();
                // Speicher Bezahlung
                SavePayment();
                // Speicher Objekt Patient
                m_PMAPI.SavePatient(m_Patient);
            }
            if (m_NeuerTeilnehmer == true)
            {
                // Eingabe Speichern
                SaveParticipantGenerally();
                // SpeicherVorgespräch
                SavePaticipantBriefing();
                // Speichere Behandlung
                SaveTreatment();
                // Speicher Bezahlung
                SavePayment();
                // Speicher Objekt Patient
                m_PMAPI.CreatePatient(m_Patient);
            }
           
        }

        private void textBox_Groesse_TextChanged(object sender, EventArgs e)
        {
            BMIBerechnen();
        }

        private void textBox_Gewicht_TextChanged(object sender, EventArgs e)
        {
            BMIBerechnen();
        }

        private void textBox_Email_TextChanged(object sender, EventArgs e)
        {

        }



        



      

    }
}
